package com.jxdinfo.hussar.example.cggl.materialpurchaseflow.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jxdinfo.hussar.example.cggl.materialpurchaseflow.model.MaterialPurchaseFlow;
import com.jxdinfo.hussar.workflow.engine.response.BpmResponseResult;
import com.jxdinfo.hussar.example.cggl.materialpurchaseflow.dto.MaterialPurchaseFlowMaterialpurchaseflowdataset1;
import com.jxdinfo.hussar.example.cggl.materialpurchaseflow.dto.MaterialPurchaseFlowDto;
import com.jxdinfo.hussar.example.cggl.materialpurchaseflow.vo.MaterialPurchaseFlowPageVO;
import com.jxdinfo.hussar.platform.core.base.apiresult.ApiResponse;

/**
 * 采购信息流程主子表服务类
 */
public interface MaterialPurchaseFlowService {

    /**
     * 采购信息流程主子表表单查询
     */
    ApiResponse<MaterialPurchaseFlow> formQuery(String id);

    /**
     * 采购信息流程主子表新增或修改
     */
    ApiResponse<String> insertOrUpdate(MaterialPurchaseFlow materialPurchaseFlow);

    /**
     * 提交流程表单(优先提交至驳回节点)时操作业务表数据
     */
    String formsubmitreject(MaterialPurchaseFlowDto materialPurchaseFlowDto, String businessKey);

    /**
     * 采购信息流程主子表提交流程表单(优先提交至驳回节点)
     */
    ApiResponse<String> flowFormSubmitReject(MaterialPurchaseFlowDto materialPurchaseFlowDto);

    /**
     * 采购信息流程主子表驳回至初始节点
     */
    ApiResponse<String> initialNodeReject(MaterialPurchaseFlowDto materialPurchaseFlowDto);

    ApiResponse<String> initialnodereject(String taskId, String comment);

    /**
     * 采购信息流程主子表表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<MaterialPurchaseFlowPageVO> hussarQueryPage(Page<MaterialPurchaseFlow> page);

    /**
     * 采购信息流程主子表表格查询（带分页）
     *
     * @param page 分页对象
     * @return 查询结果
     */
    ApiResponse<MaterialPurchaseFlowPageVO> hussarQueryPage_order_custom(Page<MaterialPurchaseFlow> page);

    /**
     * 采购信息流程主子表表格查询（带分页）
     *
     * @param materialpurchaseflowdataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<MaterialPurchaseFlowPageVO> hussarQuerymaterialPurchaseFlowCondition_1Page(MaterialPurchaseFlowMaterialpurchaseflowdataset1 materialpurchaseflowdataset1);

    /**
     * 采购信息流程主子表表格查询（带分页）
     *
     * @param materialpurchaseflowdataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<MaterialPurchaseFlowPageVO> hussarQuerymaterialPurchaseFlowCondition_1Page_order_custom(MaterialPurchaseFlowMaterialpurchaseflowdataset1 materialpurchaseflowdataset1);

    /**
     * 采购信息流程主子表流程列表物理删除
     */
    ApiResponse<String> flowTableDelete(String id);

    /**
     * 采购信息流程主子表流程列表物理删除(仅删除未启动流程和节点处于第一节点的流程)
     */
    ApiResponse<String> flowTableDeleteUnStart(String id);

    /**
     * 获取流程状态
     */
    BpmResponseResult getValidateResult(String id);

    /**
     * 删除流程实例
     */
    ApiResponse<String> deleteProcessInstance(String id);

    /**
     * 采购信息流程主子表表格查询
     *
     * @param materialpurchaseflowdataset1 查询对象
     * @return 查询结果
     */
    ApiResponse<MaterialPurchaseFlowPageVO> hussarQuerymaterialPurchaseFlowCondition_1(MaterialPurchaseFlowMaterialpurchaseflowdataset1 materialpurchaseflowdataset1);
}
